/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GUI;

import Facade.Facade;
import Objetos.Dia;
import Objetos.Usuario;
import Funcoes.funcoes;
import Objetos.Meta;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;

/**
 *
 * @author celio
 */
public class PainelControle extends JPanel {

    JButton reabreCaixa, meta,incluirMeta;
    JTextField tValor;
    JComboBox tAno,tAnoIncluir,tMesIncluir;
    String meses[] = {"","Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"};
    String anos[] = {"","2014"};
    JTable metas;
    JScrollPane scroller;
    Facade fa;
    private Dia ultimoDia;
    Calendar data;
    private final JLabel statusDia,mes,ano, valor;
    Meta me;
   
    
    public PainelControle(final Usuario usu) {

        JLabel tela = new JLabel("... :::   Painel de Controle   ::: ...");
        tela.setBounds(400, 10, 500, 20);
        add(tela);

        data = Calendar.getInstance();
        reabreCaixa = new JButton("Reabrir caixa do dia");
        reabreCaixa.setEnabled(false);

        statusDia = new JLabel();
        statusDia.setForeground(Color.red);

        incluirMeta = new JButton("Incluir");
        
        mes = new JLabel("Mês");
        tMesIncluir = new JComboBox(meses);
        
        ano = new JLabel("Ano");
        tAnoIncluir = new JComboBox(anos);
        
        valor = new JLabel("Meta: ");
        tValor = new JTextField();
       
        
        meta = new JButton("Metas");
        tAno = new JComboBox(anos);
        
        reabreCaixa.setBounds(10, 40, 180, 20);
        statusDia.setBounds(200, 40, 600, 20);

        mes.setBounds(20, 80, 50, 20);
        tMesIncluir.setBounds(10, 100, 100, 20);
        
        ano.setBounds(130, 80, 50, 20);
        tAnoIncluir.setBounds(120, 100, 100, 20);
        
        valor.setBounds(222, 100, 100, 20);
        tValor.setBounds(255, 100, 80, 20);
        
        incluirMeta.setBounds(340, 100, 100, 20);
              
        meta.setBounds(120, 130, 100, 20);
        tAno.setBounds(10, 130, 100, 20);
        
        add(reabreCaixa);
        add(statusDia);
        
        add(meta);
        add(tAno);
        
        add(mes);
        add(tMesIncluir);
        
        add(ano);
        add(tAnoIncluir);
        
        add(valor);
        add(tValor);
        
        
        add(incluirMeta);

        situacaoDia(usu);

        reabreCaixa.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                int resposta = JOptionPane.showConfirmDialog(null, "Deseja realmente reabrir o caixa de hoje?");
                if (resposta == 0) {
                    fa = new Facade();
                    fa.reabrirDia_Dia(ultimoDia,usu);

                    funcoes.geraLog(" ", "Usuário: " + usu.getNome() + " | Fez o Logoff na tela 0001 - Principal às ");
                    //bemajava.Bematech.CancelaCupom();
                    situacaoDia(usu);
                    JOptionPane.showMessageDialog(null, "Caixa reaberto com sucesso!!!");

                }
            }
        });
        
        incluirMeta.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
               
                if(tMesIncluir.getSelectedIndex()==0||tAnoIncluir.getSelectedIndex()==0||tValor.getText().equalsIgnoreCase("")){
                    JOptionPane.showMessageDialog(null, "Preencha todos os campos!!!");
                }else{
                    
                fa = new Facade();
                if(fa.procurarPeloMesAno_Meta(Funcoes.funcoes.pegarNumeroMes(tMesIncluir.getSelectedItem().toString()), tAnoIncluir.getSelectedItem().toString(), usu)==null){
                me = new Meta();
                me.setMes(tMesIncluir.getSelectedItem().toString());
                me.setAno(tAnoIncluir.getSelectedItem().toString());
                try {
                    me.setValor(Funcoes.funcoes.formatoParaInserir(tValor.getText()));
                } catch (ParseException ex) {
                    Logger.getLogger(PainelControle.class.getName()).log(Level.SEVERE, null, ex);
                }
                
                me.setQtdDiasUteis(Funcoes.funcoes.diasNoMes(tMesIncluir.getSelectedItem().toString()));
                me.setCodMes(Funcoes.funcoes.pegarNumeroMes(tMesIncluir.getSelectedItem().toString()));
                fa.adicionar_Meta(me, usu);
                tMesIncluir.setSelectedIndex(0);
                tAnoIncluir.setSelectedIndex(0);
                tValor.setText("");
      
                }
                else{
                    JOptionPane.showMessageDialog(null, "Meta deste mês já cadastrada!");
                }
                }
            }
        });

        meta.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
            if(tAno.getSelectedIndex()==0){
                JOptionPane.showMessageDialog(null,"Selecione o ano!");
            }else{
                try {
            remove(scroller);

        } catch (NullPointerException ex) {
        }
        fa = new Facade();
        metas = fa.procurarTodasdoAno_Meta(tAno.getSelectedItem().toString(), usu);
        metas.setFont(new Font("Times New Roman", Font.BOLD, 14));
        scroller = new JScrollPane(metas, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scroller.setBounds(10, 150, 300, 200);
        add(scroller);
        
            }
                
            }
        });
        setLayout(null);
        setBackground(Color.LIGHT_GRAY);
        setBorder(BorderFactory.createBevelBorder(1, Color.DARK_GRAY, Color.DARK_GRAY));
        setSize(800, 800);
        setVisible(true);
        revalidate();
        repaint();
    }

    private void situacaoDia(Usuario usu) {
        fa = new Facade();
        ultimoDia = fa.verificarUltimoDia_Dia(usu);

        if (ultimoDia == null) {

        } else {
            if (data.getTime().toLocaleString().substring(0, 10).equalsIgnoreCase(Funcoes.funcoes.paraRecuperarData(ultimoDia.getDia_mes())) && ultimoDia.getSituacao().equalsIgnoreCase("1")) {

                statusDia.setText("O caixa de hoje, " + Funcoes.funcoes.paraRecuperarData(ultimoDia.getDia_mes()) + ", já foi fechado. \n ");
                reabreCaixa.setEnabled(true);
            } else {

                reabreCaixa.setEnabled(false);
                statusDia.setText("");
            }
        }

    }

}
